package com.hzit.generator.util;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 类名：
 * 作者：WF
 * 功能：自动生成
 */
public class MyBatisPlusGenerator {
	public static void main(String[] args) {

		DataSourceConfig.Builder dsc_builder = new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:3306/java20220620", "root", "1234");
		FastAutoGenerator.create(dsc_builder)
				// 全局配置
				.globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称？"))
						// .enableSwagger()
						.fileOverride()             // 覆盖己有生成的
						.outputDir("d:/mp"))        // 指定输出目录
				// 包配置
				.packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名？")))
				// 策略配置
				.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名，多个英文逗号分隔？所有输入 all")))
						.controllerBuilder().enableRestStyle().enableHyphenStyle()
						.entityBuilder().enableLombok().addTableFills(
								new Column("create_time", FieldFill.INSERT)
						).build())
				/*
					模板引擎配置，默认 Velocity 可选模板引擎 Beetl 或 Freemarker
				   .templateEngine(new BeetlTemplateEngine())
				   .templateEngine(new FreemarkerTemplateEngine())
				 */
				.templateEngine(new FreemarkerTemplateEngine())
				.execute();


// 处理 all 情况
	}
		protected static List<String> getTables(String tables) {
			return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
		}
}
